package br.com.hmm.mb;

import java.util.ArrayList;
import java.util.List;

import javax.faces.component.UIData;
import javax.faces.model.SelectItem;

import br.com.hmm.businesslogic.CategoriaService;
import br.com.hmm.businesslogic.ItensCategoriaService;
import br.com.hmm.entidade.Categoria;
import br.com.hmm.entidade.ItensCategoria;

public class ManterItensCategoriaBean extends GenericoBean {

	private ItensCategoria itensCategoria;
	
	private Categoria categoria;
	
	private List<ItensCategoria> listaItensCategoria;
	
	private List<SelectItem> listaCategorias = new ArrayList<SelectItem>();
	
	private UIData tblItensCategoria;
	
	private ItensCategoria itemSelecionado;
	
	public ManterItensCategoriaBean(){
		itensCategoria = new ItensCategoria();		
		
	}

	public ItensCategoria getItensCategoria() {
		return itensCategoria;
	}

	public void setItensCategoria(ItensCategoria itensCategoria) {
		this.itensCategoria = itensCategoria;
	}

	public Categoria getCategoria() {
		return categoria;
	}

	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}

	public List<ItensCategoria> getListaItensCategoria() {
		return listaItensCategoria;
	}

	public void setListaItensCategoria(List<ItensCategoria> listaItensCategoria) {
		this.listaItensCategoria = listaItensCategoria;
	}
	


	public List<SelectItem> getListaCategorias() {
		return listaCategorias;
	}

	public void setListaCategorias() {
		try{
			List<Categoria> lc = new ArrayList<Categoria>();
			lc = CategoriaService.list();
			if(!lc.isEmpty()){
				for(Categoria c : lc){
					listaCategorias.add(new SelectItem(c.getId(),c.getNome()));
				}
			}
		}catch(Exception e){
			adicionarMensagemErro("Erro ao tentar listar categorias." + e.getLocalizedMessage());
		}
	}

	public UIData getTblItensCategoria() {
		return tblItensCategoria;
	}

	public void setTblItensCategoria(UIData tblItensCategoria) {
		this.tblItensCategoria = tblItensCategoria;
	}

	public ItensCategoria getItemSelecionado() {
		return itemSelecionado;
	}

	public void setItemSelecionado(ItensCategoria itemSelecionado) {
		this.itemSelecionado = itemSelecionado;
	}

	public String novoItemCategoria(){
		itensCategoria = new ItensCategoria();		
		if(!listaCategorias.isEmpty()){
			listaCategorias.clear();
			
		}
		setListaCategorias();
		list();
		
		return "goItensCategoria";
	}
	
	public String gravar(){
		try{
			if(ItensCategoriaService.inserir(itensCategoria) == true){
				atualizarLista();
				adicionarMensagem("Ítem inserido com sucesso.");
			}else{
				adicionarMensagemErro("Esse ítem já existe.");
			}
		}catch(Exception e){
			adicionarMensagemErro("Não foi possível inserir o ítem." + e.getMessage());
		}
		return "";
	}
	
	/**
	 * 
	 */
	public void list(){
		try{
			if(ItensCategoriaService.list() == null){
				adicionarMensagemErro("Nenhum ítem encontrado");
			}else{
				setListaItensCategoria(ItensCategoriaService.list());
			}
		}catch(Exception e){
			adicionarMensagemErro("Erro: " + e.getLocalizedMessage());
		}
	}	
	
	public void atualizarLista(){
		try{
			itensCategoria = new ItensCategoria();
			list();
		}catch(Exception e){
			adicionarMensagemErro("Não foi possível atualizar a lista." + e.getLocalizedMessage());
		}		
	}
	
	public void delete(){
		try{
			ItensCategoria ic = (ItensCategoria) tblItensCategoria.getRowData();
			if(ItensCategoriaService.delete(ic) == true){
				listaItensCategoria.remove(tblItensCategoria.getRowIndex());
				adicionarMensagem("Ítem removido com sucesso.");
			}else{
				adicionarMensagemErro("Não foi possível remover o ítem.");
			}
		}catch(Exception e){
			adicionarMensagemErro("Erro: " + e.getLocalizedMessage());
		}
	}
	
	public String edicaoItemCategoria(){
		itemSelecionado = (ItensCategoria) tblItensCategoria.getRowData();
		return "goEdicaoItemCategoria";
	}
	
	
	public String atualizar(){
		try{
			if(ItensCategoriaService.atualizar(itemSelecionado) == true){
				adicionarMensagem("Ítem atualizado com sucesso.");
			}else{
				adicionarMensagemErro("Não foi possível atualizar o ítem selecionado.");
			}
		}catch(Exception e){
			adicionarMensagemErro("Erro: " + e.getLocalizedMessage());
		}
		
		return novoItemCategoria();
	}
	
	
	public String voltar(){
		return "goItensCategoria";
	}
}
